home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / DRIVES.SWG / 0018_VOL-SER1.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  2KB  |  58 lines

  1. {
  2.  This Turbo Pascal code will read the serial number and volume
  3.  from disks that have been Formatted under Dos 4.0 and higher ...
  4. }
  5. (*-------------------------------------------------------------------*)
  6. Program VolSN;  { reads disk serial number & volume Label (Dos 4.0+) }
  7. Uses    Dos;
  8. Type    MediaID = Record
  9.                     InfoLevel   : Word;
  10.                     SerialN     : LongInt;
  11.                     VLabel      : Array [0..10] of Char;
  12.                     SysName     : Array [0..7] of Char;
  13.                   end;
  14.  
  15. Var     IDbuffer        : MediaID;
  16.         SerialNumber    : LongInt;
  17.         VolumeLabel     : String[12];
  18.         Reg             : Registers;
  19.         loopc           : Byte;
  20. begin
  21.         WriteLn( #10, 'VolStat 0.00 Greg Vigneault', #10 );
  22.  
  23.         Reg.AH := $30;      { Function to get Dos version number }
  24.         MsDos( Reg );       { via MS-Dos }
  25.         if ( Reg.AL < 4 ) or ( Reg.AL = 10 )
  26.             then begin      { must be Dos 4.0 or above (& not OS/2?) }
  27.                 WriteLn( 'Dos version error',#7 );
  28.                 Halt(1)     { abort Program }
  29.             end;
  30.  
  31.         Reg.AX := $6900;            { Dos Function  }
  32.         Reg.BL := 0;                { Drive (0=current,1=A,2=B,etc)}
  33.         Reg.DS := Seg( IDbuffer );  { place to return data }
  34.         Reg.DX := ofs( IDbuffer );
  35.         MsDos( Reg );               { call Dos }
  36.         { there'll be an error if disk doesn't have a serial # ... }
  37.         if ( Reg.FLAGS and 1 ) <> 0 { carry flag set? }
  38.             then begin
  39.                 WriteLn( 'Dos error getting Media ID',#7 );
  40.                 Halt(2);
  41.             end;
  42.  
  43.         SerialNumber := IDbuffer.SerialN;   { get serial number }
  44.  
  45.         WriteLn( 'Disk serial number: ', SerialNumber );
  46.  
  47.         VolumeLabel := '';
  48.         loopc := 0;
  49.         While ( IDbuffer.VLabel[ loopc ] <> ' ' )
  50.             do begin
  51.                 VolumeLabel[ loopc+1 ] := IDbuffer.VLabel[ loopc ];
  52.                 inC( loopc );
  53.             end;
  54.         VolumeLabel[0] := CHR( loopc ); { set TP String length }
  55.         if ( loopc <> 0 ) then
  56.             WriteLn( 'Disk volume Label : ', VolumeLabel );
  57. end.
  58.